const {User} = require('../../model/user');
const bcrypt = require('bcrypt');

module.exports = async (req, res) => {
    //接受请求参数
    const {email, password} = req.body;
    //如果用户没有输入邮件地址或者密码
    if (email.trim().length == 0 || password.trim().length == 0)
        return res.status(400).render('admin/error', {msg: "邮件地址或密码错误"});

    //根据邮箱地址查询用户信息,查询到user为对象(存储了用户信息),否则为空
    let user = await User.findOne({email});
    //查询到了用户
    if (user) {
        //使用bcrypt进行密码比对
        let isVaild = await bcrypt.compare(password, user.password);
        //将客户端传来的密码和用户信息的密码做比对
        if (isVaild) {
            //登录成功
            //将用户名存储在请求对象中
            req.session.username = user.username;
            req.session.role = user.role;

            //重定向到用户列表页面
            //存储到app后所有页面都可共享
            req.app.locals.userInfo = user; //req.app拿到的就是app.js里面的app
            //判断用户角色
            if (user.role == 'admin')
                res.redirect('/admin/user');//跳转到管理页面
            else
                res.redirect('/home/');//跳转到博客首页

        } else {
            res.status(400).render('admin/error', {msg: "邮件地址或密码错误"});
        }
    } else {
        //没有查询到
        res.status(400).render('admin/error', {msg: "邮件地址或密码错误"});
    }


}


